<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>git - the simple guide - no deep shit!</title>
    <link href='http://fonts.googleapis.com/css?family=Chelsea+Market' rel='stylesheet' type='text/css'>
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/normalize/0/normalize.min.css" type="text/css">
    <link rel="stylesheet" href="css/style.css" type="text/css">
    <script type="text/javascript">
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-652147-13']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

      function recordOutboundLink(link, category, action) {
         _gat._getTrackerByName()._trackEvent(category, action);
         setTimeout('document.location = "' + link.href + '"', 100);
      }
    </script>
</head>
<body>
    <div class="scrollblock block-title">
        <h1>git - the simple guide</h1>
        <p>простое руководство по работе с git. Ничего сложного ;)</p>
        <a href="https://twitter.com/share" class="twitter-share-button" data-via="rogerdudler" data-size="large" data-url="http://rogerdudler.github.com/git-guide" data-related="rogerdudler" data-hashtags="git">Tweet</a>
        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
        <p class="meta">
            <a href="http://www.twitter.com/rogerdudler">Роджер Дадлер</a> (перевел <a href="http://dmitrywolf.com">Дмитрий Вольф</a>)
            <br />спасибо <a href="http://www.twitter.com/tfnico">@tfnico</a>, <a href="http://www.twitter.com/fhd">@fhd</a> and <a href="http://www.namics.com">Namics</a><br />
            это руководство на
            <a href="index.html">english</a>,
            <a href="index.de.html">deutsch</a>,
            <a href="index.es.html">español</a>,
            <a href="index.fr.html">français</a>,
            <a href="index.id.html">indonesian</a>,
            <a href="index.it.html">italiano</a>,
            <a href="index.nl.html">nederlands</a>,
            <a href="index.pl.html">polski</a>,
            <a href="index.pt_BR.html">português</a>,
            <a href="index.tr.html">türkçe</a>,
            <br/>
            <a href="index.my.html">မြန်မာ</a>,
            <a href="index.ja.html">日本語</a>,
            <a href="index.zh.html">中文</a>,
            <a href="index.ko.html">한국어</a>
            <br />
            об ошибках сообщайте на <a href="https://github.com/rogerdudler/git-guide/issues">github</a>
        </p>
        <img src="img/arrow.png" alt="" />
    </div>
    <!-- setup -->
    <a name="setup"></a>
    <div class="scrollblock block-setup">
        <h2>установка</h2>
        <p>
            <a href="http://git-scm.com/download/mac">Скачать git для OSX</a>
        </p>
        <p>
            <a href="http://msysgit.github.io/">Скачать git для Windows</a>
        </p>
        <p>
            <a href="http://book.git-scm.com/2_installing_git.html">Скачать git для Linux</a>
        </p>
    </div>
    <a name="create"></a>
    <div class="scrollblock block-create">
        <h2>создание нового репозитория</h2>
        <p>
            Для того чтобы создать новый репозиторий git, необходимо
			открыть папку где вы хотите его разместить и выполнить команду<br />
            <code>git init</code><br />

        </p>
    </div>
    <a name="checkout"></a>
    <div class="scrollblock block-checkout">
        <h2>получение репозитория</h2>
        <p>
            Создать локальную рабочую копию репозитория можно командой<br />
            <code>git clone /путь/к/репозиторию</code><br />
            когда используется удаленный сервер, команда будет<br />
            <code>git clone юзер@хост:/путь/к/репозиторию</code>
        </p>
    </div>
    <a name="trees"></a>
    <div class="scrollblock block-trees">
		<h2>рабочий процесс</h2>
        <p>
            Ваш локальный git репозиторий состоит из трех "сущностей".
            <code>Рабочий каталог</code> (Working Directory) содержит файлы.
            <code>Индекс</code> (Index) или область подготовленных файлов (Staging Area)</code>,
			содержит информацию о том, что должно войти в следующий коммит и
			<code>HEAD</code> указывает на последний коммит что вы сделали.
        </p>
        <img src="img/trees.png" alt="" />
    </div>
    <a name="add"></a>
    <div class="scrollblock block-add">
        <h2>Подготовка и коммит</h2>
        <p>
            Чтобы подготовить изменения (добавить их в <b>Индекс</b>), используйте<br />
            <code>git add &lt;имя_файла&gt;</code><br />
            <code>git add *</code><br />
            Это первый шаг в основном рабочем процессе. Сделать коммит подготовленных изменений можно командой<br />
            <code>git commit -m "Описание коммита"</code><br />
            Теперь изменения закреплены в  локальном репозитории, и на них указывает <b>HEAD</b>, но еще не в удаленном репозитории.
        </p>
    </div>
    <a name="push"></a>
    <div class="scrollblock block-remote">
        <h2>отправка изменений</h2>
        <p>
            Чтобы отправить эти изменения в ваш удаленный репозиторий, выполните <br />
            <code>git push origin master</code><br />
            Можно изменить <i>master</i> на любую другую ветвь, чтобы отправить изменения на неё.
            <br /><br />
            Если вы еще не клонировали существующий репозиторий и хотите подключить ваш к удаленному, вам нужно добавить его, выполнив<br />
            <code>git remote add origin &lt;адрес_сервера&gt;</code><br />
            Теперь вы можете отправлять изменения на удаленный репозиторий<br />

        </p>
    </div>
    <a name="branching"></a>
    <div class="scrollblock block-branching">
        <h2>ветвление</h2>
        <p>
            Ветки используются для разработки функциональности, изолированной от остальной. Ветка <i>master</i> используется по умолчанию, когда вы создаете репозиторий.
			Используйте другие ветки для разработки и слияние в <i>master</i>, когда разработка завершена.
        </p>
        <img src="img/branches.png" alt="" />
        <p>
            Создать новую ветку с названием "feature_x" и переключиться на неё можно командой<br />
            <code>git checkout -b feature_x</code><br />
            переключиться обратно на <i>master</i><br />
            <code>git checkout master</code><br />
            удалить ветку<br />
            <code>git branch -d feature_x</code><br />
            ветка не будет доступна тем, кто пользуется с вами удаленным репозиторием, пока вы не отправите её туда<br />
            <code>git push origin &lt;имя_ветки&gt;</code>
        </p>
    </div>
    <a name="update"></a>
    <div class="scrollblock block-merging">
   	<h2>обновление и слияние</h2>
        <p>
            Обновить ваш локальный репозиторий можно командой<br />
            <code>git pull</code><br />
            которая заберет изменения из удаленного репозитория и проведет слияние с активной веткой.<br />
            Для того чтобы слить другую ветку с активной (например master), используйте команду<br />
            <code>git merge &lt;имя_ветки&gt;</code><br />
            В обоих случаях git пытается автоматически слить изменения. К сожалению, это не всегда возможно и результатом станет <i>конфликт</i>.
            Вы ответственны за разрешение возникших <i>конфликтов</i>,
            путем ручного редактирования файлов, указанных git. После изменений вам надо пометить их как слитые<br />
            <code>git add &lt;имя_файла&gt;</code><br />
            перед слиянием вы можете предварительно посмотреть на изменения<br />
            <code>git diff &lt;имя_ветки&gt; &lt;имя_другой_ветки&gt;</code>
        </p>
    </div>
    <a name="tagging"></a>
    <div class="scrollblock block-tagging">
		<h2>метки</h2>
        <p>
            Рекомендуется использовать метки для закрепления момента выпуска версий. Это популярная практика, которая также используется в SVN. Создать новую метку с именем <i>1.0.0</i> можно, выполнив<br />
            <code>git tag 1.0.0 1b2e1d63ff</code><br />
            <i>1b2e1d63ff</i> это первые десять цифр уникального идентификатора (id), с которым будет связана метка. Чтобы посмотреть идентификаторы коммитов, выполните <br />
            <code>git log</code><br />
            Можно использовать меньшее количество символов в качестве идентификатора, с учетом того, что он является уникальным.
        </p>
    </div>
    <a name="checkout-replace"></a>
    <div class="scrollblock block-checkout-replace">
		<h2>замена локальных изменений</h2>
        <p>
            В случае, если вы сделали что-то не то, вы можете заменить локальные изменения, используя команду<br />
            <code>git checkout -- &lt;имя_файла&gt;</code><br />
            произойдет замена изменений в вашем рабочем каталоге, на то, что сейчас находится в HEAD. Изменения, уже внесенные в индекс, также как и новые файлы, будут сохранены.
        </p>
        <p>
            Если же вы хотите удалить все ваши локальные изменения и коммиты, получите (fetch) последние изменения с сервера и укажите локальной ветке master на них вот так<br />
            <code>git fetch origin</code><br />
            <code>git reset --hard origin/master</code>
        </p>
    </div>
    <a name="hints"></a>
    <div class="scrollblock block-hints">
		<h2>твики и удобные команды</h2>
        <p>
            встроенный в git графический интерфейс<br />
            <code>gitk</code><br />
            использовать цветной вывод в терминале<br />
            <code>git config color.ui true</code><br />
            выводить в логе коммит на одной строке<br />
            <code>git config format.pretty oneline</code><br />
            интерактивный способ добавления в индекс<br />
            <code>git add -i</code>
        </p>
    </div>
    <a name="resources"></a>
    <div class="scrollblock block-resources">
        <h2>полезные ссылки</h2>
        <h3>графические интерфейсы</h3>
        <p>
            <ul>
                <li><a href="http://gitx.laullon.com/">GitX (L) (OSX, открытый исходный код)</a></li>
                <li><a href="http://www.git-tower.com/">Tower (OSX)</a></li>
                <li><a href="http://www.sourcetreeapp.com/">Source Tree (OSX, бесплатный)</a></li>
                <li><a href="http://mac.github.com/">GitHub for Mac (OSX, бесплатный)</a></li>
                <li><a href="https://itunes.apple.com/gb/app/gitbox/id403388357?mt=12">GitBox (OSX)</a></li>
            </ul>
        </p>
        <h3>руководства</h3>
        <p>
            <ul>
                <li><a href="http://book.git-scm.com/">Git Community Book</a></li>
                <li><a href="http://progit.org/book/ru/">Pro Git (перевод)</a></li>
                <li><a href="http://think-like-a-git.net/">Think like a git</a></li>
                <li><a href="http://help.github.com/">GitHub Help</a></li>
                <li><a href="http://marklodato.github.com/visual-git-guide/index-en.html">A Visual Git Guide</a></li>
            </ul>
        </p>
    </div>
    <div class="announcement">
        <a href="http://frontify.com/?utm_source=gitguide&amp;utm_campaign=founder">
            <img src="http://d13bhd1byokz0o.cloudfront.net/ad/clarify-announcement-git@2x.png" width="960" height="100" alt="Clarify" />
        </a>
    </div>
    <a name="comments"></a>
    <div class="scrollblock block-comments">
        <h2>комментарии</h2>
        <div id="disqus_thread"></div>
        <script type="text/javascript">
            /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
            var disqus_shortname = 'git-the-simple-guide'; // required: replace example with your forum shortname

            /* * * DON'T EDIT BELOW THIS LINE * * */
            (function() {
                var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
                dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
                (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
            })();
        </script>
        <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
    </div>
    <a href="http://www.git-tower.com/?source=rd" onClick="recordOutboundLink(this, 'Outbound Links', 'git-tower.com');return false;" class="tower"></a>
    <a href="files/git_cheat_sheet.pdf" onClick="recordOutboundLink(this, 'Cheat Sheet', 'git-guide');return false;" class="cheatsheet"></a>
</body>
</html>
